CXX           = g++
CXXFLAGS      = -fopenmp -O3 -Wall -Wno-long-long -pedantic
DIR           = ../../build/sequential
OUT_FILE	  = mi-pap
OBJS          = $(DIR)/array.o \
				$(DIR)/bitonicsort.o \
                $(DIR)/bubblesort.o \
                $(DIR)/evenoddmergesort.o \
                $(DIR)/main.o \
                $(DIR)/shearsort.o \
                $(DIR)/sortingalgorithm.o

run: build
	$(DIR)/$(OUT_FILE) $(ARGS)

build: $(OBJS)
	$(CXX) $(CXXFLAGS) $(OBJS) -o $(DIR)/$(OUT_FILE)
  
$(DIR)/main.o: $(DIR) main.cpp \
		array.h \
		bitonicSort.h \
		bubbleSort.h \
		shearSort.h \
		sortingAlgorithm.h
	$(CXX) -c $(CXXFLAGS) -o $(DIR)/main.o main.cpp
	
$(DIR)/array.o: $(DIR) array.h \
		Array.cpp
	$(CXX) -c $(CXXFLAGS) -o $(DIR)/array.o Array.cpp
	
$(DIR)/bitonicsort.o: $(DIR) bitonicSort.h \
		BitonicSort.cpp \
		sortingAlgorithm.h \
		array.h
	$(CXX) -c $(CXXFLAGS) -o $(DIR)/bitonicsort.o BitonicSort.cpp
	
$(DIR)/bubblesort.o: $(DIR) bubbleSort.h \
		BubbleSort.cpp \
		sortingAlgorithm.h \
		array.h
	$(CXX) -c $(CXXFLAGS) -o $(DIR)/bubblesort.o BubbleSort.cpp

$(DIR)/evenoddmergesort.o: $(DIR) evenOddMergeSort.h \
		EvenOddMergeSort.cpp \
		sortingAlgorithm.h \
		array.h
	$(CXX) -c $(CXXFLAGS) -o $(DIR)/evenoddmergesort.o EvenOddMergeSort.cpp
	
$(DIR)/shearsort.o: $(DIR) shearSort.h \
		ShearSort.cpp \
		sortingAlgorithm.h \
		$(DIR)/bubblesort.o \
		array.h
	$(CXX) -c $(CXXFLAGS) -o $(DIR)/shearsort.o ShearSort.cpp
	
$(DIR)/sortingalgorithm.o: $(DIR) sortingAlgorithm.h \
		SortingAlgorithm.cpp 
	$(CXX) -c $(CXXFLAGS) -o $(DIR)/sortingalgorithm.o SortingAlgorithm.cpp
	
$(DIR):
	mkdir $(DIR)
  
clean:
	rm $(DIR)/$(OUT_FILE)
	rm $(OBJS)
	rmdir $(DIR)
